Embedding Quadtree Matrices in a Lazy Functional Language ∗
نویسندگان
چکیده
A technique for supporting quadtree matrices in a lazy functional langauge is presented that ameliorates tensions between performance and purity. In large matrix computations the facility to update in-place is a requisite for high performance. Thus, techniques for applying safe side effects to quadtree matrices are presented. Performance enhancements come via intrinsic properties of quadtree matrices, e.g., locality of reference. The expressiveness of quadtree matrix algorithms is enhanced by the tools of the higher-order, typed language, Haskell. Matrix-matrix multiply and Cholesky factorization are provided with time comparisons to C. In contrast to our earlier work, the protocol is convenient even for Fortran programmers and its performance scales nicely and compares well with Fortran enough to demonstrate that lazy languages can compete.
منابع مشابه
Post-design Domain-Specific Language Embedding: A Case Study in the Software Engineering Domain
Experiences are presented from a new case study of embedding domain-specific languages in the lazy functional language Haskell. The domain languages come from the Odin software build system. Thus, in contrast to most previous embedding projects, a design and implementation of the domain languages existed when the project began. Consequently, the design could not be varied to suit the target lan...
متن کاملA Proof Tool for Reasoning About Functional Programs
This paper describes a system to support reasoning about lazy functional programs. We describe an approach based on combining a deep embedding of the language in HOL and a set of proof tools to raise the level of interaction with the theorem prover. This approach allows meta-theoretic reasoning about the semantics and reasoning about unde-ned programs while still supporting practical reasoning ...
متن کاملLazy Assertions
Assertions test expected properties of run-time values without dissrupting the normal working of a program. So in a lazy functional language assertions should be lazy — not forcing evaluation, but only examining what is evaluated by other parts of the program. We describe two different ways of embedding lazy assertions in Haskell, one sequential and the other concurrent. Examples illustrate the...
متن کاملCTy: a Haskell DSL for Specifying and Generating Combinatoric Test-cases
The Classification Tree Method (CTM) is a popular approach in functional testing. It allows testers to systematically partition the input domains of a target program, and specifies the combinations they want. This paper presents an implementation of CTM as a domain specific language (DSL) embedded in a functional language Haskell. Such an implementation is lean, but very powerful. It furthermor...
متن کاملConcurrent Programming in Haskell
In this paper, an extension of the non-strict functional language Haskell 3] is presented. It performs the evaluation of expressions by using multiple threads. The synchronous model and the event interface used are similar to Reppy's CML 11], but in this case we must deal with new factors like non-strictness, embedding the synchronous operations into the IO monad. Lazy structures are useful to ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2004